﻿using Autofac;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Until.Model
{
    public class AutofacModuleRegister : Autofac.Module
    {
        //重写Autofac管道Load方法，在这里注册注入
        protected override void Load(ContainerBuilder builder)
        {
            //程序集注入业务服务
            var IAppServices = Assembly.Load("QuickCode.IApplication");
            var AppServices = Assembly.Load("QuickCode.Application");
            //根据名称约定（服务层的接口和实现均以Service结尾），实现服务接口和服务实现的依赖
            builder.RegisterAssemblyTypes(IAppServices,AppServices)
              .Where(t => t.Name.EndsWith("Application"))
              .AsImplementedInterfaces();
        }
        #region 没有接口类的注入方式
        //protected override void Load(ContainerBuilder builder)
        //{
        //    //程序集注入业务服务
        //    var AppServices = Assembly.Load("QuickCode.Application");
        //    //根据名称约定（服务层的接口和实现均以Service结尾），实现服务接口和服务实现的依赖
        //    builder.RegisterAssemblyTypes(AppServices)
        //      .Where(t => t.Name.EndsWith("Application"));
        //}
        #endregion
    }
}
